<?php
 Session_Start () ;
 $_SESSION ["repertoire_config"] = "../../include" ; 
 Include ("../../include/garennes.cfg") ;
 Include ("../../include/init.php") ;
 Include ("../include/config.inc") ;
 verif_droits ($droit_courant, $_SESSION ["code"]) ;
 
 $id_classe = var_courante ("id_classe", 0, 0) ;
 $nom_fichier = var_courante ("nom_fichier", 0, "") ;
 $millesime = millesime (0) ;
 $numero_rne = retrouve_rne ($millesime) ; If (StrToUpper (SubStr (PHP_OS, 0, 3) == "WIN")) { $separateur = "\\" ; } Else { $separateur = "/" ; }
 
 $param_theme = parametres_theme (themeparsession ($_SESSION ["code"])) ;
 $rep_themes = "../../images/themes/" ;
 Include ($rep_themes.$param_theme ["nom_repertoire"]."/".$param_theme ["fichier_config"]) ;
 
 If ($id_classe < 0)
  {
   // Procedure d'appel du calcul du PDF
   Echo "<HTML><HEAD><TITLE>Garennes.</TITLE>" ;
   Echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1;url='./trombinoscope_prof_pdf.php?id_classe=".(-$id_classe)."&code=".$_SESSION ["code"]."&nom_fichier=trombinoscope_enseignant.pdf'\">" ;
   Echo "</HEAD>" ;
   Echo "<BODY BACKGROUND=\"".$rep_themes.$param_theme ["nom_repertoire"]."/".$theme [9][10]."\" onContextMenu=\"return false\">" ;
   Echo "<CENTER><B>Cr&eacute;ation du PDF du trombinoscope enseignant pour impression.<BR>Calcul en cours... Veuillez patienter !</B><BR>" ;
   Echo "<a href=\"./trombinoscope_prof_pdf.php?id_classe=".(-$id_classe)."&code=".$_SESSION ["code"]."&nom_fichier=trombinoscope_enseignant.pdf\" border=\"0\">" ;
   Echo "<IMG SRC=\"../../images/attente.gif\" BORDER=\"1\"></a></CENTER>" ;
   Echo "</BODY></HTML>" ;
  }
 Else
  {
   // Transmission serveur SQL
   SQL_transmission (4) ;
   
   Include ("../../include/phppdflib.class.php") ;
   
   // Parametres bulletin PDF
   $bulletin_pdf_format = 0 ; // 0 : portrait ; 1 : paysage
   // !!!! MODE PAYSAGE A FAIRE -> UTILISER UNIQUEMENT LE MODE PORTRAIT
   $bulletin_pdf_hauteur = 842 ; // 595
   $bulletin_pdf_largeur = 595 ; // 842
   If ($bulletin_pdf_format)
    {
     $bulletin_pdf_rotation = 90 ;
     $bulletin_pdf_largeur_photo = 55 ;
     $bulletin_pdf_hauteur_photo = 78 ;
    }
   Else
    {
     $bulletin_pdf_rotation = 0 ;
     $bulletin_pdf_largeur_photo = 52 ;
     $bulletin_pdf_hauteur_photo = 75 ;
    }
   $bulletin_pdf_largeur_entete = $bulletin_pdf_largeur ;
   $bulletin_pdf_hauteur_entete = 50 ;
   $bulletin_pdf_marge_haut = 10 ;
   $bulletin_pdf_marge_bas = 20 ;
   $bulletin_pdf_marge_gauche = 10 ;
   $bulletin_pdf_marge_droite = 10 ;
   If ($bulletin_pdf_format) { $bulletin_pdf_nombre_photo_ligne = 8 ; }
   Else { $bulletin_pdf_nombre_photo_ligne = 5 ; }
   $bulletin_pdf_nombre_max_photo = 40 ;
   $bulletin_pdf_nombre_max_lignes = $bulletin_pdf_nombre_max_photo/$bulletin_pdf_nombre_photo_ligne ;
   $bulletin_pdf_largeur_emplacement = ($bulletin_pdf_largeur-$bulletin_pdf_marge_gauche-$bulletin_pdf_marge_droite)/$bulletin_pdf_nombre_photo_ligne ; // 105.25
   $bulletin_pdf_hauteur_emplacement = ($bulletin_pdf_hauteur-$bulletin_pdf_hauteur_entete-$bulletin_pdf_marge_haut-$bulletin_pdf_marge_bas)/$bulletin_pdf_nombre_max_lignes ; // = 495/6=99 
   $bulletin_pdf_espacement_haut = 1 ;
   $bulletin_pdf_espacement_milieu = 1 ;
   $bulletin_pdf_espacement_bas = 1 ;
   $bulletin_pdf_espacement_gauche = 2 ;
   $bulletin_pdf_espacement_droite = 2 ;
   
   // Taille photo
   //                                    20% - 33% - 100%
   $photo_bulletin_pdf_hauteur = 78 ; // 53  - 90  - 265
   $photo_bulletin_pdf_largeur = 55 ; // 38  - 65  - 189
   $nbr_photo_largeur_bulletin_pdf = 8 ;
   
   // Variables
   $nom_classe = nom_classe_long_parid ($id_classe) ;
   $rens_classe = SQL_commande ("SELECT * FROM classes WHERE id_classe='".$id_classe."' LIMIT 1", $id_sql) ;
   $rs_cl = SQL_tableau_associatif ($rens_classe, "") ;
   
   // Chercher les fiches eleves de la classe $id_classe
   $resultat = SQL_commande ("SELECT DISTINCT s.professeur,u.id_utilisateur,u.civilite,u.nom,u.prenom,u.photo,d.nom_long,d.nom_court,d.nom_bref
                                FROM services_prof s,utilisateurs u,disciplines d WHERE s.classe='".$id_classe."' AND u.id_utilisateur=s.professeur
			         AND s.discipline=d.id_discipline AND u.millesime='".$millesime."' ORDER BY u.nom,u.prenom,u.login", $id_sql) ;
   //$resultat = SQL_commande ("SELECT * FROM eleves WHERE classe='".$id_classe."' AND exterieur='0' ORDER BY nom,prenoms,login", $id_sql) ;
   
   // Calcul du nombre de photos reelles
   $prof = SQL_tableau_associatif ($resultat, "") ;
   $nombre = 0 ;
   $compteur = 1 ;
   While ($compteur <= SQL_nbr_lignes ($resultat))
    {
     $nombre++ ;
     $id_prof = (integer)$prof ["id_utilisateur"] ;
     $prof = SQL_tableau_associatif ($resultat, "") ;
     $compteur++ ;
     While ($id_prof == (integer)$prof ["id_utilisateur"])
      {
       $prof = SQL_tableau_associatif ($resultat, "") ;
       $compteur++ ;
      }
    }
   $resultat = SQL_commande ("SELECT DISTINCT s.professeur,u.id_utilisateur,u.civilite,u.nom,u.prenom,u.photo,d.nom_long,d.nom_court,d.nom_bref
                                FROM services_prof s,utilisateurs u,disciplines d WHERE s.classe='".$id_classe."' AND u.id_utilisateur=s.professeur
			         AND s.discipline=d.id_discipline AND u.millesime='".$millesime."' ORDER BY u.nom,u.prenom,u.login", $id_sql) ;
  
   // Determine le nombre de photos par ligne
   If ($bulletin_pdf_format)
    {
     If ($nombre < 13) { $bulletin_pdf_nombre_photo_ligne = 4 ; }
     ElseIf ($nombre < 21) { $bulletin_pdf_nombre_photo_ligne = 5 ; }
     ElseIf ($nombre < 31) { $bulletin_pdf_nombre_photo_ligne = 6 ; }
     Else { $bulletin_pdf_nombre_photo_ligne = 8 ; }
    }
   Else
    {
     If ($nombre < 13) { $bulletin_pdf_nombre_photo_ligne = 3 ; }
     ElseIf ($nombre < 21) { $bulletin_pdf_nombre_photo_ligne = 4 ; }
     Else { $bulletin_pdf_nombre_photo_ligne = 5 ; }
    }
   
   // Calcul le nombre de lignes et le reste sur la derniere 
   $nbr_lg = Floor ($nombre/$bulletin_pdf_nombre_photo_ligne) ;
   $nbr_reste = $nombre%$bulletin_pdf_nombre_photo_ligne ;
   
   // Calcul le nombre totale de ligne meme non remplie (pour la derniere)
   $nbr_ligne_total = $nbr_lg ;
   If ($nbr_reste) { $nbr_ligne_total++ ; }
   
   // Calcul de la taille du rectangle de toutes les photos
   $taille_x = $bulletin_pdf_largeur_emplacement*$bulletin_pdf_nombre_photo_ligne ;
   $taille_y = $bulletin_pdf_hauteur_emplacement*$nbr_ligne_total ;
   $echelle_x = ($bulletin_pdf_largeur-$bulletin_pdf_marge_gauche-$bulletin_pdf_marge_droite)/$taille_x ;
   $echelle_y = ($bulletin_pdf_hauteur-$bulletin_pdf_hauteur_entete-$bulletin_pdf_marge_haut-$bulletin_pdf_marge_bas)/$taille_y ;
   If ($echelle_x < $echelle_y) { $echelle = $echelle_y ; }
   Else { $echelle = $echelle_x ; }
   If ($echelle_y > 3) { $echelle_y = 3 ; }
   If ($echelle_x > 3) { $echelle_x = 3 ; }
   If ($echelle > 2) { $echelle = 2 ; }
   
   $bulletin_pdf_largeur_photo *= $echelle ;
   $bulletin_pdf_hauteur_photo *= $echelle ;
   $bulletin_pdf_largeur_emplacement *= $echelle_x ;
   $bulletin_pdf_hauteur_emplacement *= $echelle_y ;
   $bulletin_pdf_espacement_image = ($bulletin_pdf_largeur_emplacement-$bulletin_pdf_largeur_photo)/2 ;
   $bulletin_pdf_marge_interieure_hauteur = ($bulletin_pdf_hauteur-$bulletin_pdf_hauteur_entete-$bulletin_pdf_marge_haut-$bulletin_pdf_marge_bas-$bulletin_pdf_hauteur_emplacement*$nbr_ligne_total)/2 ;
   $bulletin_pdf_marge_interieure_largeur = ($bulletin_pdf_largeur-$bulletin_pdf_marge_gauche-$bulletin_pdf_marge_droite-$bulletin_pdf_largeur_emplacement*$bulletin_pdf_nombre_photo_ligne)/2 ;
   
   // Cherche le nom de la classe
   $nom_classe = SQL_commande ("SELECT * FROM classes WHERE id_classe='".$id_classe."' LIMIT 1", $id_sql) ;
   $cl = SQL_tableau_associatif ($nom_classe, "") ;
   
   // Recherche nom prof principal
   $resultat_prof_p = SQL_commande ("SELECT u.nom,u.prenom,u.civilite,u.droits FROM utilisateurs u,classes c WHERE c.id_classe='".$id_classe."' AND c.prof_princ=u.numen LIMIT 1", $id_sql) ;
   
   // Gestion
   //$gestion = SQL_commande ("SELECT * FROM gestion", $id_sql) ;
   //$ges = SQL_tableau_associatif ($gestion, "") ;
  
   $pdf = New pdffile ;
   $page = $pdf->New_Page ("a4") ;
   
   // Entete
   $param ["height"] = "20" ;
   $param ["width"] = 1 ;
   $param ["font"] = "Helvetica" ;
   $param ["red"] = 0 ;
   $param ["green"] = 0 ;
   $param ["blue"] = 0 ;
   $pdf->Draw_Text ($x+$bulletin_pdf_marge_gauche+10,
                    $bulletin_pdf_hauteur-$bulletin_pdf_marge_haut-25,
  		    "Enseignants de ".$cl ["nom"]."(".$cl ["nom_bref"].")",
  		    $page, $param) ;
   $annee = $millesime."-".($millesime+1) ;
   $pdf->Draw_Text ($bulletin_pdf_largeur-$bulletin_pdf_marge_droite-$pdf->StrLen ($annee, $param),
                    $bulletin_pdf_hauteur-$bulletin_pdf_marge_haut-25,
                    $annee, $page, $param) ;
   
   If (SQL_nbr_lignes ($resultat_prof_p))
    {
     $prof_princ = SQL_tableau_associatif ($resultat_prof_p, "") ;
     If ($prof_princ ["droits"] == $droit_prof)
      {
       $param ["height"] = "10" ;
       If (StrPos (" ", $prof_princ ["prenom"]))
        {
         $prenom = SubStr ($prof_princ ["prenom"], 0, StrPos (" ", $prof_princ ["prenom"])) ;
        }
       Else
        { $prenom = $prof_princ ["prenom"] ; }
       $prenom = StrToUpper (SubStr ($prenom, 0, 1)).StrToLower (SubSTr ($prenom, 1, StrLen ($prenom)-1)) ;
       Switch ($prof_princ ["civilite"])
        {
         Case  0 : $civilite = "Mme" ; Break ;
         Case  1 : $civilite = "Mle" ; Break ;
         Case  2 : $civilite = "M." ; Break ;
         Default : $civilite = "M." ; Break ;
        }
       $pdf->Draw_Text ($x+$bulletin_pdf_marge_gauche+10,
                        $bulletin_pdf_hauteur-$bulletin_pdf_marge_haut-40,
                        "Professeur principal : ".$civilite." ".$prenom." ".StrToUpper ($prof_princ ["nom"]),
  		        $page, $param) ;
      }
    }
   
   // Mise en place des photos et des noms
   $y = $bulletin_pdf_hauteur_emplacement*($nbr_ligne_total-1)+$bulletin_pdf_marge_bas+$bulletin_pdf_marge_interieure_hauteur ;
   $nbr = 0 ;
   $compteur = 1 ;
   $prof = SQL_tableau_associatif ($resultat, "") ;
   While ($compteur <= SQL_nbr_lignes ($resultat))
    {
     $x = $bulletin_pdf_largeur_emplacement*$nbr+$bulletin_pdf_marge_gauche*$echelle_x ;
     //$prof = SQL_tableau_associatif ($resultat, "") ;
     If (($prof ["photo"]) And (File_Exists ($repertoire_racine.$separateur."images".$separateur."profs".$separateur.$numero_rne.$separateur.$prof ["photo"])))
      { $fiche_photo = $repertoire_racine.$separateur."images".$separateur."profs".$separateur.$numero_rne.$separateur.$prof ["photo"] ; }
     ElseIf (File_Exists ($repertoire_racine.$separateur."images".$separateur."profs".$separateur."anonyme.png"))
      { $fiche_photo = $repertoire_racine.$separateur."images".$separateur."profs".$separateur."anonyme.png" ; }
     Else
      { $fiche_photo = "" ; }
     If ($fiche_photo)
      {
       $donnees = image_jpg ($fiche_photo) ;
       $image = $pdf->jfif_embed ($donnees) ;
       $taille = $pdf->Get_Image_Size ($image) ;
       If ($taille ["height"]) { $echelle = $bulletin_pdf_hauteur_photo/$taille ["height"] ; }
       Else { $echelle = 1 ; }
       $pdf->Image_Place ($image, $y+($bulletin_pdf_espacement_bas+$bulletin_pdf_espacement_milieu+18)*$echelle_y,
                          $x+$bulletin_pdf_espacement_image, $page, $echelle, 0) ;
      }
  
     // Nom
     $param ["height"] = "8" ;
     $param ["width"] = 1 ;
     $param ["align"] = "center" ;
     $param ["font"] = "Helvetica-Bold" ;
     $param ["red"] = 0 ;
     $param ["green"] = 0 ;
     $param ["blue"] = 0 ;
     If (StrPos ($prof ["prenom"], " ")) { $prenom = SubStr ($prof ["prenom"], 0, StrPos ($prof ["prenom"], " ")) ; }
     Else { $prenom = $prof ["prenom"] ; }
     $prenom = StrToUpper (SubStr ($prenom, 0, 1)).StrToLower (SubStr ($prenom, 1, StrLen ($prenom)-1)) ;
     
     $disc = $prof ["nom_court"] ;
     $nom = $prof ["nom"] ;
     $id_prof = (integer)$prof ["id_utilisateur"] ;
     $prof = SQL_tableau_associatif ($resultat, "") ;
     $compteur++ ;
     While ($id_prof == (integer)$prof ["id_utilisateur"])
      {
       $disc .= "\n".$prof ["nom_court"] ;
       $prof = SQL_tableau_associatif ($resultat, "") ;
       $compteur++ ;
      }
     $pdf->Draw_Paragraph ($y+($bulletin_pdf_espacement_bas+20)*$echelle_y-1,
                           $x+$bulletin_pdf_espacement_gauche*$echelle_x,
  	                   $y+$bulletin_pdf_espacement_bas,
  			   $x+$bulletin_pdf_largeur_emplacement-$bulletin_pdf_espacement_droite*$echelle_x,
  			   $nom." ".$prenom.Chr(10)." ".Chr(10).$disc, $page, $param) ;
     $nbr++ ;
     If ($nbr == $bulletin_pdf_nombre_photo_ligne) 
      {
       $y = $y - $bulletin_pdf_hauteur_emplacement ;
       $nbr = 0 ;
      }
    }

   // Trace des lignes
   $param ["width"] = 1 ;
   $param ["red"] = 0 ;
   $param ["green"] = 0 ;
   $param ["blue"] = 0 ;
   $xx [0] = $bulletin_pdf_marge_gauche*$echelle_x ;
   $xx [1] = $bulletin_pdf_largeur-$bulletin_pdf_marge_droite ;
   $yy [0] = $yy [1] = $bulletin_pdf_hauteur-$bulletin_pdf_marge_haut-50-$bulletin_pdf_marge_interieure_hauteur ;
   $pdf->Draw_Line ($xx, $yy, $page, $param) ;
   $y = $bulletin_pdf_hauteur_emplacement*($nbr_ligne_total-1)+$bulletin_pdf_marge_bas+$bulletin_pdf_marge_interieure_hauteur ;
   // Horizontales
   For ($i = 0 ; $i < $nbr_ligne_total ; $i++)
    {
     $xx [0] = $bulletin_pdf_marge_gauche*$echelle_x+$bulletin_pdf_marge_interieure_largeur ;
     $xx [1] = $bulletin_pdf_largeur-$bulletin_pdf_marge_droite-$bulletin_pdf_marge_interieure_largeur ;
     $yy [0] = $yy [1] = $y ;
     $pdf->Draw_Line ($xx, $yy, $page, $param) ;
     $y = $y - $bulletin_pdf_hauteur_emplacement ;
    }
   $y_init = $bulletin_pdf_hauteur_emplacement*$nbr_ligne_total+$bulletin_pdf_marge_bas+$bulletin_pdf_marge_interieure_hauteur ;
   $y_final = $y+$bulletin_pdf_hauteur_emplacement ;
   // Verticales
   For ($j = 0 ; $j < $bulletin_pdf_nombre_photo_ligne ; $j++)
    {
     $xx [0] = $xx [1] = $bulletin_pdf_largeur_emplacement*$j+$bulletin_pdf_marge_gauche*$echelle_x+$bulletin_pdf_marge_interieure_largeur ;
     $yy [0] = $y_init ;
     $yy [1] = $y_final ;
     $pdf->Draw_Line ($xx, $yy, $page, $param) ;
    }
   $xx [0] = $xx [1] = $bulletin_pdf_largeur-$bulletin_pdf_marge_droite-$bulletin_pdf_marge_interieure_largeur ;
   $yy [0] = $y_init ;
   $yy [1] = $y_final ;
   $pdf->Draw_Line ($xx, $yy, $page, $param) ;
   
   // Affichage du copyright
   If ($bulletin_pdf_format == 0) { $l = $bulletin_pdf_largeur ; } Else { $l = $bulletin_pdf_hauteur ; }
   // Couleurs
   $param ["width"] = 1 ;
   $param ["red"] = 0 ;
   $param ["green"] = 0 ;
   $param ["blue"] = 0 ;  
     
   // Texte a droite
   $texte = Chr (169)." Garennes ".$version_garennes."- GNU GPL - 2000-".Date ("Y") ;
   $param ["font"] = "Helvetica" ;
   $param ["height"] = "6" ;
   $pdf->Draw_Text ($l*$echelle_x-$bulletin_pdf_marge_droite-$pdf->StrLen ($texte, $param),
                    $y_final-$param ["height"], $texte, $page, $param) ;
   
   Header ("Content-Disposition: inline; filename=trombinoscope_enseignant_".$cl ["nom"].".pdf");
   Header ("Content-Type: application/pdf");
   Echo $pdf->Generate () ;
  }
?>